package com.zhaoyh.transport.tio.socket;

import org.tio.server.ServerGroupContext;
import org.tio.server.TioServer;
import org.tio.server.intf.ServerAioHandler;
import org.tio.server.intf.ServerAioListener;

/**
 * @author 祥霸
 * @date 2019/4/16
 */
public class UniServerTransport {
    //handler, 包括编码、解码、消息处理
    public static ServerAioHandler aioHandler = new UniServerAioHandler();

    //事件监听器，可以为null，但建议自己实现该接口，可以参考showcase了解些接口
    public static ServerAioListener aioListener = null;

    //一组连接共用的上下文对象
    public static ServerGroupContext serverGroupContext = new ServerGroupContext("kxe-tio-server", aioHandler, aioListener);

    //tioServer对象
    public static TioServer tioServer = new TioServer(serverGroupContext);

    //有时候需要绑定ip，不需要则null
    public static String serverIp = null;

    //监听的端口
    public static final int SERVER_PORT = 48151;				// 服务器端口号
    public static final String CHARSET = "UTF-8";				// 字符编码
    public static final long HEARTBEAT_TIMEOUT = 10000;			// 心跳包超时时间

    /**
     * 启动程序入口
     */
    public static void start() {
        try {
            serverGroupContext.setHeartbeatTimeout(HEARTBEAT_TIMEOUT);
            tioServer.start(serverIp, SERVER_PORT);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        UniServerTransport.start();
    }
}
